package cn.liangxxhu.rocketmq.repository;

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.data.repository.NoRepositoryBean;

import java.io.Serializable;
import java.util.List;

@NoRepositoryBean
public interface BaseEsRepository<T, ID extends Serializable> extends ElasticsearchRepository<T, ID> {
    
    /**
     * 批量保存/更新文档。
     * @param entities 文档集合
     * @return 保存后的文档集合
     */
    default List<T> batchSave(List<T> entities) {
        return (List<T>) saveAll(entities);
    }
    
    /**
     * 根据 ID 列表查询文档。
     * @param ids 文档ID集合
     * @return 文档列表
     */
    List<T> findByIdIn(List<ID> ids);

    /**
     * 查询所有文档列表。
     * @return 文档列表
     */
    List<T> getAll();
    
    /**
     * 根据 ID 列表删除文档。
     * @param ids 文档ID集合
     * @return 被删除的文档数量
     */
    long deleteByIdIn(List<ID> ids);
}
